from machine import freq, Pin, SPI,UART
import st7789
import time
import gc
import struct
from queue import Queue
import _thread
import vga1_8x8 as font_1
import vga1_8x16 as font_2
import vga1_16x16 as font_3
import vga1_16x32 as font_4
freq(160000000)

TFA = 0
BFA = 0

def config(rotation=1, buffer_size=0, options=0):
    return st7789.ST7789(
        SPI(1, baudrate=30000000, sck=Pin(2), mosi=Pin(3)),
        128,
        160,
        reset=Pin(10, Pin.OUT),
        cs=Pin(7, Pin.OUT),
        dc=Pin(6, Pin.OUT),
        color_order=st7789.RGB,
        inversion=False,
        rotation=rotation,
        options=options,
        buffer_size=buffer_size)

tft=config()
tft.init()
tft.fill(st7789.BLACK)
u=UART(1,rx=8,tx=9,baudrate=115200,rxbuf=1544)

list_color=b"\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x1f\x00\x7f\x00\xbf\x00\xff\x01?\x01\x7f\x01\xbf\x01\xff\x02?\x02\x7f\x02\xbf\x02\xff\x03?\x03\x7f\x03\xbf\x03\xff\x04?\x04\x7f\x04\xbf\x04\xff\x05?\x05\x7f\x05\xbf\x05\xff\x06?\x06\x7f\x06\xbf\x06\xff\x07?\x07\x7f\x07\xbf\x07\xff\x07\xff\x0f\xfe\x17\xfd\x1f\xfc'\xfb/\xfa7\xf9?\xf8G\xf7O\xf6W\xf5_\xf4g\xf3o\xf2w\xf1\x7f\xf0\x87\xef\x8f\xee\x97\xed\x9f\xec\xa7\xeb\xaf\xea\xb7\xe9\xbf\xe8\xc7\xe7\xcf\xe6\xd7\xe5\xdf\xe4\xe7\xe3\xef\xe2\xf7\xe1\xff\xe0\xff\xe0\xff\xa0\xff`\xff \xfe\xe0\xfe\xa0\xfe`\xfe \xfd\xe0\xfd\xa0\xfd`\xfd \xfc\xe0\xfc\xa0\xfc`\xfc \xfb\xe0\xfb\xa0\xfb`\xfb \xfa\xe0\xfa\xa0\xfa`\xfa \xf9\xe0\xf9\xa0\xf9`\xf9 \xf8\xe0\xf8\xa0\xf8`\xf8 \xf8\x00\xf0\x00\xe8\x00\xe0\x00\xd8\x00\xd0\x00\xc8\x00\xc0\x00\xb8\x00\xb0\x00\xa8\x00\xa0\x00\x98\x00\x90\x00\x88\x00\x80\x00\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x1f\x00\x7f\x00\xbf\x00\xff\x01?\x01\x7f\x01\xbf\x01\xff\x02?\x02\x7f\x02\xbf\x02\xff\x03?\x03\x7f\x03\xbf\x03\xff\x04?\x04\x7f\x04\xbf\x04\xff\x05?\x05\x7f\x05\xbf\x05\xff\x06?\x06\x7f\x06\xbf\x06\xff\x07?\x07\x7f\x07\xbf\x07\xff\x07\xff\x0f\xfe\x17\xfd\x1f\xfc'\xfb/\xfa7\xf9?\xf8G\xf7O\xf6W\xf5_\xf4g\xf3o\xf2w\xf1\x7f\xf0\x87\xef\x8f\xee\x97\xed\x9f\xec\xa7\xeb\xaf\xea\xb7\xe9\xbf\xe8\xc7\xe7\xcf\xe6\xd7\xe5\xdf\xe4\xe7\xe3\xef\xe2\xf7\xe1\xff\xe0\xff\xe0\xff\xa0\xff`\xff \xfe\xe0\xfe\xa0\xfe`\xfe \xfd\xe0\xfd\xa0\xfd`\xfd \xfc\xe0\xfc\xa0\xfc`\xfc \xfb\xe0\xfb\xa0\xfb`\xfb \xfa\xe0\xfa\xa0\xfa`\xfa \xf9\xe0\xf9\xa0\xf9`\xf9 \xf8\xe0\xf8\xa0\xf8`\xf8 \xf8\x00\xf0\x00\xe8\x00\xe0\x00\xd8\x00\xd0\x00\xc8\x00\xc0\x00\xb8\x00\xb0\x00\xa8\x00\xa0\x00\x98\x00\x90\x00\x88\x00\x80\x00\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x1f\x00\x7f\x00\xbf\x00\xff\x01?\x01\x7f\x01\xbf\x01\xff\x02?\x02\x7f\x02\xbf\x02\xff\x03?\x03\x7f\x03\xbf\x03\xff\x04?\x04\x7f\x04\xbf\x04\xff\x05?\x05\x7f\x05\xbf\x05\xff\x06?\x06\x7f\x06\xbf\x06\xff\x07?\x07\x7f\x07\xbf\x07\xff\x07\xff\x0f\xfe\x17\xfd\x1f\xfc'\xfb/\xfa7\xf9?\xf8G\xf7O\xf6W\xf5_\xf4g\xf3o\xf2w\xf1\x7f\xf0\x87\xef\x8f\xee\x97\xed\x9f\xec\xa7\xeb\xaf\xea\xb7\xe9\xbf\xe8\xc7\xe7\xcf\xe6\xd7\xe5\xdf\xe4\xe7\xe3\xef\xe2\xf7\xe1\xff\xe0\xff\xe0\xff\xa0\xff`\xff \xfe\xe0\xfe\xa0\xfe`\xfe \xfd\xe0\xfd\xa0\xfd`\xfd \xfc\xe0\xfc\xa0\xfc`\xfc \xfb\xe0\xfb\xa0\xfb`\xfb \xfa\xe0\xfa\xa0\xfa`\xfa \xf9\xe0\xf9\xa0\xf9`\xf9 \xf8\xe0\xf8\xa0\xf8`\xf8 \xf8\x00\xf0\x00\xe8\x00\xe0\x00\xd8\x00\xd0\x00\xc8\x00\xc0\x00\xb8\x00\xb0\x00\xa8\x00\xa0\x00\x98\x00\x90\x00\x88\x00\x80\x00\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x1f\x00\x7f\x00\xbf\x00\xff\x01?\x01\x7f\x01\xbf\x01\xff\x02?\x02\x7f\x02\xbf\x02\xff\x03?\x03\x7f\x03\xbf\x03\xff\x04?\x04\x7f\x04\xbf\x04\xff\x05?\x05\x7f\x05\xbf\x05\xff\x06?\x06\x7f\x06\xbf\x06\xff\x07?\x07\x7f\x07\xbf\x07\xff\x07\xff\x0f\xfe\x17\xfd\x1f\xfc'\xfb/\xfa7\xf9?\xf8G\xf7O\xf6W\xf5_\xf4g\xf3o\xf2w\xf1\x7f\xf0\x87\xef\x8f\xee\x97\xed\x9f\xec\xa7\xeb\xaf\xea\xb7\xe9\xbf\xe8\xc7\xe7\xcf\xe6\xd7\xe5\xdf\xe4\xe7\xe3\xef\xe2\xf7\xe1\xff\xe0\xff\xe0\xff\xa0\xff`\xff \xfe\xe0\xfe\xa0\xfe`\xfe \xfd\xe0\xfd\xa0\xfd`\xfd \xfc\xe0\xfc\xa0\xfc`\xfc \xfb\xe0\xfb\xa0\xfb`\xfb \xfa\xe0\xfa\xa0\xfa`\xfa \xf9\xe0\xf9\xa0\xf9`\xf9 \xf8\xe0\xf8\xa0\xf8`\xf8 \xf8\x00\xf0\x00\xe8\x00\xe0\x00\xd8\x00\xd0\x00\xc8\x00\xc0\x00\xb8\x00\xb0\x00\xa8\x00\xa0\x00\x98\x00\x90\x00\x88\x00\x80\x00\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x1f\x00\x7f\x00\xbf\x00\xff\x01?\x01\x7f\x01\xbf\x01\xff\x02?\x02\x7f\x02\xbf\x02\xff\x03?\x03\x7f\x03\xbf\x03\xff\x04?\x04\x7f\x04\xbf\x04\xff\x05?\x05\x7f\x05\xbf\x05\xff\x06?\x06\x7f\x06\xbf\x06\xff\x07?\x07\x7f\x07\xbf\x07\xff\x07\xff\x0f\xfe\x17\xfd\x1f\xfc'\xfb/\xfa7\xf9?\xf8G\xf7O\xf6W\xf5_\xf4g\xf3o\xf2w\xf1\x7f\xf0\x87\xef\x8f\xee\x97\xed\x9f\xec\xa7\xeb\xaf\xea\xb7\xe9\xbf\xe8\xc7\xe7\xcf\xe6\xd7\xe5\xdf\xe4\xe7\xe3\xef\xe2\xf7\xe1\xff\xe0\xff\xe0\xff\xa0\xff`\xff \xfe\xe0\xfe\xa0\xfe`\xfe \xfd\xe0\xfd\xa0\xfd`\xfd \xfc\xe0\xfc\xa0\xfc`\xfc \xfb\xe0\xfb\xa0\xfb`\xfb \xfa\xe0\xfa\xa0\xfa`\xfa \xf9\xe0\xf9\xa0\xf9`\xf9 \xf8\xe0\xf8\xa0\xf8`\xf8 \xf8\x00\xf0\x00\xe8\x00\xe0\x00\xd8\x00\xd0\x00\xc8\x00\xc0\x00\xb8\x00\xb0\x00\xa8\x00\xa0\x00\x98\x00\x90\x00\x88\x00\x80\x00\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x1f\x00\x7f\x00\xbf\x00\xff\x01?\x01\x7f\x01\xbf\x01\xff\x02?\x02\x7f\x02\xbf\x02\xff\x03?\x03\x7f\x03\xbf\x03\xff\x04?\x04\x7f\x04\xbf\x04\xff\x05?\x05\x7f\x05\xbf\x05\xff\x06?\x06\x7f\x06\xbf\x06\xff\x07?\x07\x7f\x07\xbf\x07\xff\x07\xff\x0f\xfe\x17\xfd\x1f\xfc'\xfb/\xfa7\xf9?\xf8G\xf7O\xf6W\xf5_\xf4g\xf3o\xf2w\xf1\x7f\xf0\x87\xef\x8f\xee\x97\xed\x9f\xec\xa7\xeb\xaf\xea\xb7\xe9\xbf\xe8\xc7\xe7\xcf\xe6\xd7\xe5\xdf\xe4\xe7\xe3\xef\xe2\xf7\xe1\xff\xe0\xff\xe0\xff\xa0\xff`\xff \xfe\xe0\xfe\xa0\xfe`\xfe \xfd\xe0\xfd\xa0\xfd`\xfd \xfc\xe0\xfc\xa0\xfc`\xfc \xfb\xe0\xfb\xa0\xfb`\xfb \xfa\xe0\xfa\xa0\xfa`\xfa \xf9\xe0\xf9\xa0\xf9`\xf9 \xf8\xe0\xf8\xa0\xf8`\xf8 \xf8\x00\xf0\x00\xe8\x00\xe0\x00\xd8\x00\xd0\x00\xc8\x00\xc0\x00\xb8\x00\xb0\x00\xa8\x00\xa0\x00\x98\x00\x90\x00\x88\x00\x80\x00\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x1f\x00\x7f\x00\xbf\x00\xff\x01?\x01\x7f\x01\xbf\x01\xff\x02?\x02\x7f\x02\xbf\x02\xff\x03?\x03\x7f\x03\xbf\x03\xff\x04?\x04\x7f\x04\xbf\x04\xff\x05?\x05\x7f\x05\xbf\x05\xff\x06?\x06\x7f\x06\xbf\x06\xff\x07?\x07\x7f\x07\xbf\x07\xff\x07\xff\x0f\xfe\x17\xfd\x1f\xfc'\xfb/\xfa7\xf9?\xf8G\xf7O\xf6W\xf5_\xf4g\xf3o\xf2w\xf1\x7f\xf0\x87\xef\x8f\xee\x97\xed\x9f\xec\xa7\xeb\xaf\xea\xb7\xe9\xbf\xe8\xc7\xe7\xcf\xe6\xd7\xe5\xdf\xe4\xe7\xe3\xef\xe2\xf7\xe1\xff\xe0\xff\xe0\xff\xa0\xff`\xff \xfe\xe0\xfe\xa0\xfe`\xfe \xfd\xe0\xfd\xa0\xfd`\xfd \xfc\xe0\xfc\xa0\xfc`\xfc \xfb\xe0\xfb\xa0\xfb`\xfb \xfa\xe0\xfa\xa0\xfa`\xfa \xf9\xe0\xf9\xa0\xf9`\xf9 \xf8\xe0\xf8\xa0\xf8`\xf8 \xf8\x00\xf0\x00\xe8\x00\xe0\x00\xd8\x00\xd0\x00\xc8\x00\xc0\x00\xb8\x00\xb0\x00\xa8\x00\xa0\x00\x98\x00\x90\x00\x88\x00\x80\x00\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x1f\x00\x7f\x00\xbf\x00\xff\x01?\x01\x7f\x01\xbf\x01\xff\x02?\x02\x7f\x02\xbf\x02\xff\x03?\x03\x7f\x03\xbf\x03\xff\x04?\x04\x7f\x04\xbf\x04\xff\x05?\x05\x7f\x05\xbf\x05\xff\x06?\x06\x7f\x06\xbf\x06\xff\x07?\x07\x7f\x07\xbf\x07\xff\x07\xff\x0f\xfe\x17\xfd\x1f\xfc'\xfb/\xfa7\xf9?\xf8G\xf7O\xf6W\xf5_\xf4g\xf3o\xf2w\xf1\x7f\xf0\x87\xef\x8f\xee\x97\xed\x9f\xec\xa7\xeb\xaf\xea\xb7\xe9\xbf\xe8\xc7\xe7\xcf\xe6\xd7\xe5\xdf\xe4\xe7\xe3\xef\xe2\xf7\xe1\xff\xe0\xff\xe0\xff\xa0\xff`\xff \xfe\xe0\xfe\xa0\xfe`\xfe \xfd\xe0\xfd\xa0\xfd`\xfd \xfc\xe0\xfc\xa0\xfc`\xfc \xfb\xe0\xfb\xa0\xfb`\xfb \xfa\xe0\xfa\xa0\xfa`\xfa \xf9\xe0\xf9\xa0\xf9`\xf9 \xf8\xe0\xf8\xa0\xf8`\xf8 \xf8\x00\xf0\x00\xe8\x00\xe0\x00\xd8\x00\xd0\x00\xc8\x00\xc0\x00\xb8\x00\xb0\x00\xa8\x00\xa0\x00\x98\x00\x90\x00\x88\x00\x80\x00\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x1f\x00\x7f\x00\xbf\x00\xff\x01?\x01\x7f\x01\xbf\x01\xff\x02?\x02\x7f\x02\xbf\x02\xff\x03?\x03\x7f\x03\xbf\x03\xff\x04?\x04\x7f\x04\xbf\x04\xff\x05?\x05\x7f\x05\xbf\x05\xff\x06?\x06\x7f\x06\xbf\x06\xff\x07?\x07\x7f\x07\xbf\x07\xff\x07\xff\x0f\xfe\x17\xfd\x1f\xfc'\xfb/\xfa7\xf9?\xf8G\xf7O\xf6W\xf5_\xf4g\xf3o\xf2w\xf1\x7f\xf0\x87\xef\x8f\xee\x97\xed\x9f\xec\xa7\xeb\xaf\xea\xb7\xe9\xbf\xe8\xc7\xe7\xcf\xe6\xd7\xe5\xdf\xe4\xe7\xe3\xef\xe2\xf7\xe1\xff\xe0\xff\xe0\xff\xa0\xff`\xff \xfe\xe0\xfe\xa0\xfe`\xfe \xfd\xe0\xfd\xa0\xfd`\xfd \xfc\xe0\xfc\xa0\xfc`\xfc \xfb\xe0\xfb\xa0\xfb`\xfb \xfa\xe0\xfa\xa0\xfa`\xfa \xf9\xe0\xf9\xa0\xf9`\xf9 \xf8\xe0\xf8\xa0\xf8`\xf8 \xf8\x00\xf0\x00\xe8\x00\xe0\x00\xd8\x00\xd0\x00\xc8\x00\xc0\x00\xb8\x00\xb0\x00\xa8\x00\xa0\x00\x98\x00\x90\x00\x88\x00\x80\x00\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x1f\x00\x7f\x00\xbf\x00\xff\x01?\x01\x7f\x01\xbf\x01\xff\x02?\x02\x7f\x02\xbf\x02\xff\x03?\x03\x7f\x03\xbf\x03\xff\x04?\x04\x7f\x04\xbf\x04\xff\x05?\x05\x7f\x05\xbf\x05\xff\x06?\x06\x7f\x06\xbf\x06\xff\x07?\x07\x7f\x07\xbf\x07\xff\x07\xff\x0f\xfe\x17\xfd\x1f\xfc'\xfb/\xfa7\xf9?\xf8G\xf7O\xf6W\xf5_\xf4g\xf3o\xf2w\xf1\x7f\xf0\x87\xef\x8f\xee\x97\xed\x9f\xec\xa7\xeb\xaf\xea\xb7\xe9\xbf\xe8\xc7\xe7\xcf\xe6\xd7\xe5\xdf\xe4\xe7\xe3\xef\xe2\xf7\xe1\xff\xe0\xff\xe0\xff\xa0\xff`\xff \xfe\xe0\xfe\xa0\xfe`\xfe \xfd\xe0\xfd\xa0\xfd`\xfd \xfc\xe0\xfc\xa0\xfc`\xfc \xfb\xe0\xfb\xa0\xfb`\xfb \xfa\xe0\xfa\xa0\xfa`\xfa \xf9\xe0\xf9\xa0\xf9`\xf9 \xf8\xe0\xf8\xa0\xf8`\xf8 \xf8\x00\xf0\x00\xe8\x00\xe0\x00\xd8\x00\xd0\x00\xc8\x00\xc0\x00\xb8\x00\xb0\x00\xa8\x00\xa0\x00\x98\x00\x90\x00\x88\x00\x80\x00\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x1f\x00\x7f\x00\xbf\x00\xff\x01?\x01\x7f\x01\xbf\x01\xff\x02?\x02\x7f\x02\xbf\x02\xff\x03?\x03\x7f\x03\xbf\x03\xff\x04?\x04\x7f\x04\xbf\x04\xff\x05?\x05\x7f\x05\xbf\x05\xff\x06?\x06\x7f\x06\xbf\x06\xff\x07?\x07\x7f\x07\xbf\x07\xff\x07\xff\x0f\xfe\x17\xfd\x1f\xfc'\xfb/\xfa7\xf9?\xf8G\xf7O\xf6W\xf5_\xf4g\xf3o\xf2w\xf1\x7f\xf0\x87\xef\x8f\xee\x97\xed\x9f\xec\xa7\xeb\xaf\xea\xb7\xe9\xbf\xe8\xc7\xe7\xcf\xe6\xd7\xe5\xdf\xe4\xe7\xe3\xef\xe2\xf7\xe1\xff\xe0\xff\xe0\xff\xa0\xff`\xff \xfe\xe0\xfe\xa0\xfe`\xfe \xfd\xe0\xfd\xa0\xfd`\xfd \xfc\xe0\xfc\xa0\xfc`\xfc \xfb\xe0\xfb\xa0\xfb`\xfb \xfa\xe0\xfa\xa0\xfa`\xfa \xf9\xe0\xf9\xa0\xf9`\xf9 \xf8\xe0\xf8\xa0\xf8`\xf8 \xf8\x00\xf0\x00\xe8\x00\xe0\x00\xd8\x00\xd0\x00\xc8\x00\xc0\x00\xb8\x00\xb0\x00\xa8\x00\xa0\x00\x98\x00\x90\x00\x88\x00\x80\x00\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x1f\x00\x7f\x00\xbf\x00\xff\x01?\x01\x7f\x01\xbf\x01\xff\x02?\x02\x7f\x02\xbf\x02\xff\x03?\x03\x7f\x03\xbf\x03\xff\x04?\x04\x7f\x04\xbf\x04\xff\x05?\x05\x7f\x05\xbf\x05\xff\x06?\x06\x7f\x06\xbf\x06\xff\x07?\x07\x7f\x07\xbf\x07\xff\x07\xff\x0f\xfe\x17\xfd\x1f\xfc'\xfb/\xfa7\xf9?\xf8G\xf7O\xf6W\xf5_\xf4g\xf3o\xf2w\xf1\x7f\xf0\x87\xef\x8f\xee\x97\xed\x9f\xec\xa7\xeb\xaf\xea\xb7\xe9\xbf\xe8\xc7\xe7\xcf\xe6\xd7\xe5\xdf\xe4\xe7\xe3\xef\xe2\xf7\xe1\xff\xe0\xff\xe0\xff\xa0\xff`\xff \xfe\xe0\xfe\xa0\xfe`\xfe \xfd\xe0\xfd\xa0\xfd`\xfd \xfc\xe0\xfc\xa0\xfc`\xfc \xfb\xe0\xfb\xa0\xfb`\xfb \xfa\xe0\xfa\xa0\xfa`\xfa \xf9\xe0\xf9\xa0\xf9`\xf9 \xf8\xe0\xf8\xa0\xf8`\xf8 \xf8\x00\xf0\x00\xe8\x00\xe0\x00\xd8\x00\xd0\x00\xc8\x00\xc0\x00\xb8\x00\xb0\x00\xa8\x00\xa0\x00\x98\x00\x90\x00\x88\x00\x80\x00\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x1f\x00\x7f\x00\xbf\x00\xff\x01?\x01\x7f\x01\xbf\x01\xff\x02?\x02\x7f\x02\xbf\x02\xff\x03?\x03\x7f\x03\xbf\x03\xff\x04?\x04\x7f\x04\xbf\x04\xff\x05?\x05\x7f\x05\xbf\x05\xff\x06?\x06\x7f\x06\xbf\x06\xff\x07?\x07\x7f\x07\xbf\x07\xff\x07\xff\x0f\xfe\x17\xfd\x1f\xfc'\xfb/\xfa7\xf9?\xf8G\xf7O\xf6W\xf5_\xf4g\xf3o\xf2w\xf1\x7f\xf0\x87\xef\x8f\xee\x97\xed\x9f\xec\xa7\xeb\xaf\xea\xb7\xe9\xbf\xe8\xc7\xe7\xcf\xe6\xd7\xe5\xdf\xe4\xe7\xe3\xef\xe2\xf7\xe1\xff\xe0\xff\xe0\xff\xa0\xff`\xff \xfe\xe0\xfe\xa0\xfe`\xfe \xfd\xe0\xfd\xa0\xfd`\xfd \xfc\xe0\xfc\xa0\xfc`\xfc \xfb\xe0\xfb\xa0\xfb`\xfb \xfa\xe0\xfa\xa0\xfa`\xfa \xf9\xe0\xf9\xa0\xf9`\xf9 \xf8\xe0\xf8\xa0\xf8`\xf8 \xf8\x00\xf0\x00\xe8\x00\xe0\x00\xd8\x00\xd0\x00\xc8\x00\xc0\x00\xb8\x00\xb0\x00\xa8\x00\xa0\x00\x98\x00\x90\x00\x88\x00\x80\x00\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x1f\x00\x7f\x00\xbf\x00\xff\x01?\x01\x7f\x01\xbf\x01\xff\x02?\x02\x7f\x02\xbf\x02\xff\x03?\x03\x7f\x03\xbf\x03\xff\x04?\x04\x7f\x04\xbf\x04\xff\x05?\x05\x7f\x05\xbf\x05\xff\x06?\x06\x7f\x06\xbf\x06\xff\x07?\x07\x7f\x07\xbf\x07\xff\x07\xff\x0f\xfe\x17\xfd\x1f\xfc'\xfb/\xfa7\xf9?\xf8G\xf7O\xf6W\xf5_\xf4g\xf3o\xf2w\xf1\x7f\xf0\x87\xef\x8f\xee\x97\xed\x9f\xec\xa7\xeb\xaf\xea\xb7\xe9\xbf\xe8\xc7\xe7\xcf\xe6\xd7\xe5\xdf\xe4\xe7\xe3\xef\xe2\xf7\xe1\xff\xe0\xff\xe0\xff\xa0\xff`\xff \xfe\xe0\xfe\xa0\xfe`\xfe \xfd\xe0\xfd\xa0\xfd`\xfd \xfc\xe0\xfc\xa0\xfc`\xfc \xfb\xe0\xfb\xa0\xfb`\xfb \xfa\xe0\xfa\xa0\xfa`\xfa \xf9\xe0\xf9\xa0\xf9`\xf9 \xf8\xe0\xf8\xa0\xf8`\xf8 \xf8\x00\xf0\x00\xe8\x00\xe0\x00\xd8\x00\xd0\x00\xc8\x00\xc0\x00\xb8\x00\xb0\x00\xa8\x00\xa0\x00\x98\x00\x90\x00\x88\x00\x80\x00\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x1f\x00\x7f\x00\xbf\x00\xff\x01?\x01\x7f\x01\xbf\x01\xff\x02?\x02\x7f\x02\xbf\x02\xff\x03?\x03\x7f\x03\xbf\x03\xff\x04?\x04\x7f\x04\xbf\x04\xff\x05?\x05\x7f\x05\xbf\x05\xff\x06?\x06\x7f\x06\xbf\x06\xff\x07?\x07\x7f\x07\xbf\x07\xff\x07\xff\x0f\xfe\x17\xfd\x1f\xfc'\xfb/\xfa7\xf9?\xf8G\xf7O\xf6W\xf5_\xf4g\xf3o\xf2w\xf1\x7f\xf0\x87\xef\x8f\xee\x97\xed\x9f\xec\xa7\xeb\xaf\xea\xb7\xe9\xbf\xe8\xc7\xe7\xcf\xe6\xd7\xe5\xdf\xe4\xe7\xe3\xef\xe2\xf7\xe1\xff\xe0\xff\xe0\xff\xa0\xff`\xff \xfe\xe0\xfe\xa0\xfe`\xfe \xfd\xe0\xfd\xa0\xfd`\xfd \xfc\xe0\xfc\xa0\xfc`\xfc \xfb\xe0\xfb\xa0\xfb`\xfb \xfa\xe0\xfa\xa0\xfa`\xfa \xf9\xe0\xf9\xa0\xf9`\xf9 \xf8\xe0\xf8\xa0\xf8`\xf8 \xf8\x00\xf0\x00\xe8\x00\xe0\x00\xd8\x00\xd0\x00\xc8\x00\xc0\x00\xb8\x00\xb0\x00\xa8\x00\xa0\x00\x98\x00\x90\x00\x88\x00\x80\x00\x00\x10\x00\x11\x00\x12\x00\x13\x00\x14\x00\x15\x00\x16\x00\x17\x00\x18\x00\x19\x00\x1a\x00\x1b\x00\x1c\x00\x1d\x00\x1e\x00\x1f\x00\x1f\x00\x7f\x00\xbf\x00\xff\x01?\x01\x7f\x01\xbf\x01\xff\x02?\x02\x7f\x02\xbf\x02\xff\x03?\x03\x7f\x03\xbf\x03\xff\x04?\x04\x7f\x04\xbf\x04\xff\x05?\x05\x7f\x05\xbf\x05\xff\x06?\x06\x7f\x06\xbf\x06\xff\x07?\x07\x7f\x07\xbf\x07\xff\x07\xff\x0f\xfe\x17\xfd\x1f\xfc'\xfb/\xfa7\xf9?\xf8G\xf7O\xf6W\xf5_\xf4g\xf3o\xf2w\xf1\x7f\xf0\x87\xef\x8f\xee\x97\xed\x9f\xec\xa7\xeb\xaf\xea\xb7\xe9\xbf\xe8\xc7\xe7\xcf\xe6\xd7\xe5\xdf\xe4\xe7\xe3\xef\xe2\xf7\xe1\xff\xe0\xff\xe0\xff\xa0\xff`\xff \xfe\xe0\xfe\xa0\xfe`\xfe \xfd\xe0\xfd\xa0\xfd`\xfd \xfc\xe0\xfc\xa0\xfc`\xfc \xfb\xe0\xfb\xa0\xfb`\xfb \xfa\xe0\xfa\xa0\xfa`\xfa \xf9\xe0\xf9\xa0\xf9`\xf9 \xf8\xe0\xf8\xa0\xf8`\xf8 \xf8\x00\xf0\x00\xe8\x00\xe0\x00\xd8\x00\xd0\x00\xc8\x00\xc0\x00\xb8\x00\xb0\x00\xa8\x00\xa0\x00\x98\x00\x90\x00\x88\x00\x80\x00"

u.write(b'\xa5\x35\x01\xdb')
time.sleep(0.3)
c=u.read()

#bitmap RGB排列
brgb=[b'\x00\x10', b'\x00\x10', b'\x00\x11', b'\x00\x11', b'\x00\x12', b'\x00\x12', b'\x00\x13', b'\x00\x13', b'\x00\x14', b'\x00\x14', b'\x00\x15', b'\x00\x15', b'\x00\x16', b'\x00\x16', b'\x00\x17', b'\x00\x17', b'\x00\x18', b'\x00\x18', b'\x00\x19', b'\x00\x19', b'\x00\x1a', b'\x00\x1a', b'\x00\x1b', b'\x00\x1b', b'\x00\x1c', b'\x00\x1c', b'\x00\x1d', b'\x00\x1d', b'\x00\x1e', b'\x00\x1e', b'\x00\x1f', b'\x00\x1f', b'\x00\x1f', b'\x00_', b'\x00\x7f', b'\x00\x9f', b'\x00\xbf', b'\x00\xdf', b'\x00\xff', b'\x01\x1f', b'\x01?', b'\x01_', b'\x01\x7f', b'\x01\x9f', b'\x01\xbf', b'\x01\xdf', b'\x01\xff', b'\x02\x1f', b'\x02?', b'\x02_', b'\x02\x7f', b'\x02\x9f', b'\x02\xbf', b'\x02\xdf', b'\x02\xff', b'\x03\x1f', b'\x03?', b'\x03_', b'\x03\x7f', b'\x03\x9f', b'\x03\xbf', b'\x03\xdf', b'\x03\xff', b'\x04\x1f', b'\x04?', b'\x04_', b'\x04\x7f', b'\x04\x9f', b'\x04\xbf', b'\x04\xdf', b'\x04\xff', b'\x05\x1f', b'\x05?', b'\x05_', b'\x05\x7f', b'\x05\x9f', b'\x05\xbf', b'\x05\xdf', b'\x05\xff', b'\x06\x1f', b'\x06?', b'\x06_', b'\x06\x7f', b'\x06\x9f', b'\x06\xbf', b'\x06\xdf', b'\x06\xff', b'\x07\x1f', b'\x07?', b'\x07_', b'\x07\x7f', b'\x07\x9f', b'\x07\xbf', b'\x07\xdf', b'\x07\xff', b'\x00\x1f', b'\x07\xff', b'\x0f\xfe', b'\x0f\xfe', b'\x17\xfd', b'\x17\xfd', b'\x1f\xfc', b'\x1f\xfc', b"'\xfb", b"'\xfb", b'/\xfa', b'/\xfa', b'7\xf9', b'7\xf9', b'?\xf8', b'?\xf8', b'G\xf7', b'G\xf7', b'O\xf6', b'O\xf6', b'W\xf5', b'W\xf5', b'_\xf4', b'_\xf4', b'g\xf3', b'g\xf3', b'o\xf2', b'o\xf2', b'w\xf1', b'w\xf1', b'\x7f\xf0', b'\x7f\xf0', b'\x87\xef', b'\x87\xef', b'\x8f\xee', b'\x8f\xee', b'\x97\xed', b'\x97\xed', b'\x9f\xec', b'\x9f\xec', b'\xa7\xeb', b'\xa7\xeb', b'\xaf\xea', b'\xaf\xea', b'\xb7\xe9', b'\xb7\xe9', b'\xbf\xe8', b'\xbf\xe8', b'\xc7\xe7', b'\xc7\xe7', b'\xcf\xe6', b'\xcf\xe6', b'\xd7\xe5', b'\xd7\xe5', b'\xdf\xe4', b'\xdf\xe4', b'\xe7\xe3', b'\xe7\xe3', b'\xef\xe2', b'\xef\xe2', b'\xf7\xe1', b'\xf7\xe1', b'\xff\xe0', b'\xff\xe0', b'\xff\xe0', b'\xff\xe0', b'\xff\xc0', b'\xff\xa0', b'\xff\x80', b'\xff`', b'\xff@', b'\xff ', b'\xff\x00', b'\xfe\xe0', b'\xfe\xc0', b'\xfe\xa0', b'\xfe\x80', b'\xfe`', b'\xfe@', b'\xfe ', b'\xfe\x00', b'\xfd\xe0', b'\xfd\xc0', b'\xfd\xa0', b'\xfd\x80', b'\xfd`', b'\xfd@', b'\xfd ', b'\xfd\x00', b'\xfc\xe0', b'\xfc\xc0', b'\xfc\xa0', b'\xfc\x80', b'\xfc`', b'\xfc@', b'\xfc ', b'\xfc\x00', b'\xfb\xe0', b'\xfb\xc0', b'\xfb\xa0', b'\xfb\x80', b'\xfb`', b'\xfb@', b'\xfb ', b'\xfb\x00', b'\xfa\xe0', b'\xfa\xc0', b'\xfa\xa0', b'\xfa\x80', b'\xfa`', b'\xfa@', b'\xfa ', b'\xfa\x00', b'\xf9\xe0', b'\xf9\xc0', b'\xf9\xa0', b'\xf9\x80', b'\xf9`', b'\xf9@', b'\xf9 ', b'\xf9\x00', b'\xf8\xe0', b'\xf8\xc0', b'\xf8\xa0', b'\xf8\x80', b'\xf8`', b'\xf8@', b'\xf8 ', b'\xf8\x00', b'\xf8\x00', b'\xf8\x00', b'\xf0\x00', b'\xf0\x00', b'\xe8\x00', b'\xe8\x00', b'\xe0\x00', b'\xe0\x00', b'\xd8\x00', b'\xd8\x00', b'\xd0\x00', b'\xd0\x00', b'\xc8\x00', b'\xc8\x00', b'\xc0\x00', b'\xc0\x00', b'\xb8\x00', b'\xb8\x00', b'\xb0\x00', b'\xb0\x00', b'\xa8\x00', b'\xa8\x00', b'\xa0\x00', b'\xa0\x00', b'\x98\x00', b'\x98\x00', b'\x90\x00', b'\x90\x00', b'\x88\x00', b'\x88\x00', b'\x80\x00', b'\x80\x00', b'\x80\x00', b'\x80\x00', b'\x80\x00', b'\x80\x00', b'\x80\x00', b'\x80\x00', b'\x80\x00', b'\x80\x00', b'\x80\x00', b'\x80\x00', b'\x80\x00', b'\x80\x00', b'\x80\x00', b'\x80\x00', b'\x80\x00', b'\x80\x00', b'\x80\x00', b'\x80\x00', b'\x80\x00', b'\x80\x00', b'\x80\x00', b'\x80\x00', b'\x80\x00', b'\x80\x00', b'\x80\x00', b'\x80\x00', b'\x80\x00', b'\x80\x00', b'\x80\x00', b'\x80\x00', b'\x80\x00', b'\x80\x00', b'\x80\x00', b'\x80\x00', b'\x80\x00', b'\x80\x00', b'\x80\x00', b'\x80\x00', b'\x80\x00', b'\x80\x00', b'\x80\x00', b'\x80\x00', b'\x80\x00', b'\x80\x00', b'\x80\x00', b'\x80\x00', b'\x80\x00', b'\x80\x00', b'\x80\x00', b'\x80\x00', b'\x80\x00', b'\x80\x00', b'\x80\x00', b'\x80\x00', b'\x80\x00', b'\x80\x00', b'\x80\x00', b'\x80\x00', b'\x80\x00', b'\x80\x00', b'\x80\x00', b'\x80\x00', b'\x80\x00', b'\x80\x00', b'\x80\x00', b'\x80\x00', b'\x80\x00', b'\x80\x00', b'\x80\x00', b'\x80\x00', b'\x80\x00', b'\x80\x00', b'\x80\x00', b'\x80\x00', b'\x80\x00', b'\x80\x00', b'\x80\x00', b'\x80\x00', b'\x80\x00', b'\x80\x00', b'\x80\x00', b'\x80\x00', b'\x80\x00', b'\x80\x00', b'\x80\x00', b'\x80\x00', b'\x80\x00', b'\x80\x00', b'\x80\x00', b'\x80\x00', b'\x80\x00', b'\x80\x00', b'\x80\x00', b'\x80\x00', b'\x80\x00', b'\x80\x00', b'\x80\x00', b'\x80\x00', b'\x80\x00', b'\x80\x00', b'\x80\x00', b'\x80\x00', b'\x80\x00', b'\x80\x00', b'\x80\x00', b'\x80\x00', b'\x80\x00', b'\x80\x00', b'\x80\x00', b'\x80\x00', b'\x80\x00', b'\x80\x00', b'\x80\x00', b'\x80\x00', b'\x80\x00', b'\x80\x00', b'\x80\x00', b'\x80\x00', b'\x80\x00', b'\x80\x00', b'\x80\x00', b'\x80\x00', b'\x80\x00', b'\x80\x00', b'\x80\x00', b'\x80\x00', b'\x80\x00', b'\x80\x00', b'\x80\x00' ]

def tpp(q):
    fe=q.pop()
    q.sort()
    return (q[0]/100,q[-1]/100,fe/100,9*q[0],9*q[-1],(9*q[-1]-9*q[0])//256)
    

def tepaz(data):
    q=[]
    for i in range(769):
        tea=data[4+2*i]+data[2*i+5]*256
        q.append(tea)
    return q
    
def irz(u):
    u.write(b'\xa5\x35\x01\xdb')
    time.sleep(0.3)
    c=u.read()
    if len(c)==1544:
        return tepaz(c)


#该处为原始温度的900倍，实际温度为除以900
def t(p11,p21,p12,p22):
    return [9*p12,6*p12+3*p22,3*p12+6*p22,9*p22,3*p11+6*p12,2*p11+1*p21+4*p12+2*p22,1*p11+2*p21+2*p12+4*p22,3*p21+6*p22,6*p11+3*p12,4*p11+2*p21+2*p12+1*p22,2*p11+4*p21+1*p12+2*p22,6*p21+3*p22,9*p11,6*p11+3*p21,3*p11+6*p21,9*p21]


def bts(l):
    e=b''
    for i in l:
        e=brgb[(i-s)//st]+e
    return e

def data_l(lrx,p11,p21,p12,p22):
    l=t(p11,p21,p12,p22)
    lrx[0]=bts(l[0:4])+lrx[0]
    lrx[1]=bts(l[4:8])+lrx[1]
    lrx[2]=bts(l[8:12])+lrx[2]
    lrx[3]=bts(l[12:16])+lrx[3]
    return lrx
    
def show_l(x,y,lrx):
    m=lrx[0]+lrx[1]+lrx[2]+lrx[3]
    tft.blit_buffer(m, x, y, 124, 4)
    
eff=Queue()

def ir_th(i):
    while True:
        if eff.qsize()<5:
            eff.put(irz(u))
        else:
            time.sleep(0.15)
_thread.start_new_thread(ir_th,(1,))

tft.jpg("logo.jpg",16,110)
tft.text(font_1,"By",0,116,st7789.WHITE)
tft.blit_buffer(list_color*2, 0, 93, 128, 6)



while True:
    cc=time.ticks_ms()
    if eff.qsize():
        e=eff.get()
        ec=e.copy()
        htl=tpp(ec)#可用于获取伪色范围
        # 获得温度列表，为原始温度的100倍
        st=htl[-1]
        s=htl[3]
        lrx=[b'',b'',b'',b'']
        #显示数据行 只需要Y的初始位置即可（x定位）
        sx=0
        psy=0
        for i in range(736):
            
            y=i//32
            x=(i+1)%32-1       
            if x>=0:
                lrx=data_l(lrx,e[i+32],e[i+33],e[i],e[i+1])
            else:
                sy=psy+4*y
                show_l(sx,sy,lrx)
                lrx=[b'',b'',b'',b'']
        tft.text(font_2,"MAX:",128,0,st7789.WHITE)
        tft.text(font_1,str(htl[1]),128,20,st7789.RED)
        tft.text(font_2,"MIN:",128,40,st7789.WHITE)
        tft.text(font_1,str(htl[0]),128,60,st7789.BLUE)
        tft.text(font_1,"sensor:",128,78,st7789.WHITE)
        tft.text(font_1,str(htl[2]),128,89,st7789.GREEN)
        print(htl)
        tft.text(font_1,str(round(1000/(time.ticks_ms()-cc),1))+"FPS",110,114,st7789.YELLOW)
        tft.text(font_1,str(round(htl[0],1)),0,104,st7789.BLUE)
        tft.text(font_1,str(round((htl[0]+htl[1])/2,1)),45,104,st7789.WHITE)
        tft.text(font_1,str(round(htl[1],1)),90,104,st7789.RED)
    else:
        time.sleep(0.4)

